package cn.wen.java.sql.ds;

import java.util.List;
import java.util.Map;

/**
 * Title：数据仓库接口。
 * <p>
 * Description：规范ResultSet的反转实体。
 * <p>
 * Copyright：Copyright (c) 2010-2012
 * 
 * @author <a href="mailto:ct_wen@qq.com">ctwen</a>, 温承瑭
 * @version Revision：1.0 Date：2011/5/22 Description：初完成。
 *          <p>
 *          Revision：1.1 Date：2012/3/22 Description：提供JSON数据出口。
 *          <p>
 */
public interface IDatastore {

    /**
     * 可通过行索引号，列索引号，获取结果集的数据单元。
     * 
     * @param rowIndex 索引行号
     * @param colIndex 索引列号
     * @return DataCell，数据单元。
     */
    DataCell get(int rowIndex, int colIndex);

    /**
     * 可通过行索引号，列索引名，获取结果集的数据单元。
     * 
     * @param rowIndex 索引行号
     * @param colKey 索引列名
     * @return DataCell，数据单元。
     */
    DataCell get(int rowIndex, String colKey);

    /**
     * 可通过行索引号，获取结果集的整行数据单元。
     * 
     * @param rowIndex 索引行号
     * @return 整行数据：List集合的(DataCell)数据单元。
     */
    List<DataCell> getRowAsList(int rowIndex);

    /**
     * 可通过行索引号，获取结果集的整行数据单元。
     * 
     * @param rowIndex 索引行号
     * @return 整行数据：Map集合的(DataCell)数据单元。
     */
    Map<String, DataCell> getRowAsMap(int rowIndex);

    /**
     * 获取数据集的记录数。
     * 
     * @return 记录数
     */
    int getRowCount();

    /**
     * 将所有数据转为JSON格式并输出给调用者。
     * 
     * @return JSON数据。
     */
    String toJSONString();

}
